3-Computer Science-Software

software

Application programs {software} run on hardware.

bottleneck in process

Where inventory piles up indicates where processes slow down {bottleneck, process}. To remove bottlenecks, use smaller batches, decrease flow rate, improve efficiency and productivity there, increase people or tools there, build an alternate pathway, and/or modify process to eliminate bottleneck. Typical design weaknesses include confusing hierarchy of screens, incomplete instructions or information, poor screen design and layout, and/or unjustified assumptions about user knowledge.

contextual design

Contextual design {contextual design} finds what customers need and do and how the organization develops, checks, and sells its products, using focus groups, protocol capture, and prototyping.

Contextual design diagrams the roles of people and things in processes: Information and materials flow among people and objects. People assume information, have organizational relationships, and interaction types. Whole organization and its subgroups perform tasks. Physical objects have assigned descriptions and locations.

Organization users have goals, requirements to reach goals, and bases for satisfactory goal completion. Users have inputs with sources, processes, and outputs with destinations. Users have physical, business, and information contexts. Users have information, skills, and mental models, and talk to themselves while doing tasks.

Customers use products in specific ways, have needs and priorities, and have specific interactions with organization objects, information, and people.

Information and material flows, people relationships, people tasks, and physical objects have relations and fall into groups by time, space, task, flow, or culture.

People have roles, and objects are parts of processes, and role-and-process groups model the whole organization.

Contextual design fits changes and new roles and processes into the organization model at the appropriate location to improve functions but minimize how much people must learn.

focus group

Programmers can observe 6 to 8 users {focus group} to see how they solve a problem using software. Focus groups help find the basis of problems, not just symptoms and solutions.

pilot study

small-scale studies {pilot study}.

protocol capture

Programmers can find the protocol {protocol capture} an average user and/or an expert uses to do a (complex) process, before building software or with built software. Story boards can show processes.

prototyping

Programmers can roughly design papers or screens {prototyping} for a problem, to test and modify quickly, to build user interfaces.

trigger event

Events {trigger, event} can cause users to begin searches or other actions.

usability

Usability {usability} involves information, objects, and results. People and computers use data, object and part definitions, and instructions about procedures. Objects receive information from an object, transform received information into new sendable information, or send information to another object, and all three steps are a work task. Results are goals of a person, achievable by processing information in the system and the user.

Work flows have bottlenecks, where processes slow and inventory piles up. Businesses concentrate resources on improving bottlenecks, typically user interface (UI) design of tools and menus. Tasks must be relevant to goals and relatively easy to perform and understand.

Work items are analyzed for relevance, speed and ease of search and transfer, ease of understanding, and possibilities of mistakes. Users perform relevant tasks with more attention and good will. Understanding is better if all terms defined, steps read easily, necessary preconditions noted, branches noted, procedure accurate and tested, and steps presented one at a time. Speed is better if fewer steps, less data, fewer branches, fewer decisions, and fewer clicks.

Businesses typically reallocate work items from human objects to inanimate objects to reduce information burdens on users. Systems can guide users to information by directed search, using context-sensitive help and dialog-box help. Systems display only the most needed information. Distinctive locators include pop-up help, labels, and grouped menu items and interface objects. Wizards and coaches present a defined way of working.

usability testing

Test usability on typical user tasks by focus groups and protocol capture. Identify users' goals, current knowledge, and steps of learning to use product. Qualify users as new or existing and by knowledge level. Measure task times, successes, and errors, and user fatigue, confusion, frustration, and satisfaction.

usability engineering

Usability engineering {usability engineering} solves usability problems. Work flows have bottlenecks, where processes slow and inventory piles up. Usability engineering concentrates resources on improving bottlenecks, typically user interface (UI) design of tools and menus. Tasks must be relevant to goals and relatively easy to perform and understand. Work items are analyzed for relevance, speed and ease of search and transfer, ease of understanding, and possibilities of mistakes. Users perform relevant tasks with more attention and good will. Understanding is better if all terms defined, steps read easily, necessary preconditions noted, branches noted, procedure accurate and tested, and steps presented one at a time. Speed is better if fewer steps, less data, fewer branches, fewer decisions, and fewer clicks. Usability engineering typically reallocates work items from human objects to inanimate objects to reduce information burdens on users. Systems can guide users to information by directed search, using context-sensitive help and dialog-box help. Systems display only the most needed information. Distinctive locators include pop-up help, labels, and grouped menu items and interface objects. Wizards and coaches present a defined way of working.

work flow

Users have a work flow {work flow} they follow and a mental model of what they are supposed to do (goals) and how they do it (protocol). Users have skills and experience that contribute to performance. Users have a work environment that constrains their performance.

3-Computer Science-Software-Coding

coding of data

Storing or transmitting information can use coded symbols {coding, computer} {encoding, computer} {decoding}.

types

Codes can use binary numbers, decimal numbers, words, images, and switches. Code size depends on possible-symbol number and probability.

probability

Symbols can have equal or unequal probability. Binary code use symbols 0 and 1, with equal probability. Probability is base-2 logarithm: P = - log(2^1) = 1/2 for one position. Information {average unexpectedness} is greatest if all symbols are equally probable.

information

Information measurement uses binary units. For binary code, with two equal-probability symbols, information in one position is 1 bit, 2^1 = 2. Information in three positions is 3 bits, 2^3 = 8, with eight possible series, such as 010.

3-Computer Science-Software-Coding-String

block of data

Machines store and transmit data in record sets {block, data}| containing 2000, 4000, or 8000 bytes in fixed-length or variable-length blocks. Longer data blocks have fewer recombinations and can process faster.

packet of data

Message or information packets {packet, information} {information packet} {message, information} are only for recipients that can decode them, using same methods as for encoding. Communication requires similarities between senders and receivers. Messages must have marks to show that they are messages. Messages reflect coding method.

3-Computer Science-Software-Coding-Methods

block switching

If several inputs or outputs are waiting for transmission, CPU sends blocks in the most-efficient way {message switching} {block switching}.

Data Encryption Standard

Binary messages can split into sections and recombine many times, using methods {Data Encryption Standard} (DES) encoded in 56-bit keys. Methods can use three different keys {triple DES}.

multiplexing of data

Data can separate into small chunks, travel in pieces through different channels, and then reassemble {multiplexing, data}|.

packet switching

Message can split into parts that take alternate routes and then recombine at delivery {packet switching}|. In modems, packets are strings of 8-bit bytes, each with start and stop bit.

packing of data

Decimal-number input can convert to binary numbers {packing, data} {data, packing}. Binary numbers can convert to decimal-number output {unpacking}.

ultrawideband

Data can travel on carrier frequencies by AM or FM, or data can be in pulses {ultrawideband}| (UWB).

3-Computer Science-Software-Coding-Codes

ANSI code

Codes {ANSI code} can use 7, 8, or 9 bits to represent 128 or 256 printable and unprintable characters and symbols. ANSI is similar to ASCII.

ASCII code

Codes {ASCII code} can use 7, 8, or 9 bits to represent 128 or 256 printable and unprintable characters and symbols.

binary code

Memory locations or switches can have two states {binary code}: 0 or 1, on or off, zero voltage or unit voltage.

Manchester encoding

0 is impulse-pause, 1 is pause-impulse, and start or stop is impulse-impulse {Manchester encoding}. Start-bit impulse interval sets transmission rate, so transmission rates can vary.

3-Computer Science-Software-Data Hierarchy

data hierarchy

Data is in bits that make bytes that make words that make records that make files that make directories {data hierarchy}.

byte

Bit sets {byte}| can hold one binary-coded character or symbol, such as letters, numbers, and punctuation marks. Eight-bit bytes can code 2^8 = 256 different symbols. Bytes can have 8, 16, 32, or 64 bits. Eight-bit bytes can have two four-bit parts {nibble}. Nibbles code numbers from 0 to 15 in hexadecimal.

word of data

Byte sets {word, data}| can hold values or instructions. Word length can be constant, for more speed. Word length can be variable, for more flexibility and memory space. Words can have extra bits {tag bit} {word tag} to indicate data, code, control instruction, descriptor, date, or read-only. Words can have extra bits {correction bit} for error correction. Error-checking codes correct one-bit errors automatically and flag two-bit errors for automatic repeat.

field of record

Sets {field, record} of one or more words can hold strings or numbers. Fields can hold phrases, sentences, and instructions {data element}.

record of data

In files, field sets {record, data}| can hold data lines. Records typically have 80, 256, 2048, or 4096 bytes. Records have addresses. Records can have next-record address {pointer}. Using pointers, record series {thread} can link. Records {multi-threaded element} can be in more than one logical file.

list of records

Records can have pointers to next-record address, linking records {list, computing}. Records can have indexes. List elements can point to positions in address table {inverted list}. Last list record can point to first record {closed list} {ring, record}. Records can have pointers in both directions. Hierarchies and networks have related data elements. Memories can be lists, with nodes and node links.

file of data

Tables or record arrays {file, computing}| can store programs and/or data values. Files are record sets {data collection}.

parts

Files have initial information {file header, file} and end markers {end-of-file marker} (EOF).

file operations

Sort file lines in alphabetical, numerical, or other order. Compare files line-by-line, for differences or similarities. Delete (Remove) file from directory. Save file in directory. Copy saved file to another directory or to same directory with new name. Rename file.

reading

Computers can read files bit by bit in sequence from start to finish {serial file} or at any point {random access file}. Files can have no index {direct file}, sequential index {index sequential file}, or random index {index random file}.

database

Computer files {master file} can hold reference data or database. Files {transaction file} can contain new or temporary data to update master file.

output

Files {output file} can result from processing.

file access

Computers open and close files to read or write data {file, access}. Reading and writing can be from and to text files in linear order {sequential access}, such as appending to files. After opening sequential-access files for writing output or appending data, computers must close files before opening files for reading input. Reading and writing can be from and to records {random access}, which have addresses, such as in databases. After opening random-access files, computers can write to files and then read record without closing files first. Reading and writing can be from and to bitmaps {binary access}, which have byte positions. After opening binary-access files, computers can write to files and then read record without closing files first.

directory of computer

Named file groups {directory, computer}| form hierarchies from root directory to leaf directories. List or show directory files by alphabetical order, date saved or last used, or size. Display current directory name. Change to another directory. Make directory in higher directory. Remove directory from higher directory.

3-Computer Science-Software-Data Hierarchy-File

Comma-Separated Value file

Text files {Comma-Separated Value file} (CSV) can contain record lists, with record values separated by commas. Values are in quotes. Records end with newline character.

DOC file

Microsoft(R) Word, WordPerfect (TM), and similar word-processing programs save documents as binary files {DOC file} with DOC extension. Word-processing programs can convert DOC-file formats. In Microsoft Word, files can have Table of Contents (TOC) and Index, as well as links, fields, and hidden text.

contents

Heading paragraph styles determine TOC paragraph styles and indentation levels. TOC page numbers link to headings.

index

Text can have index fields, which you can hide or show. In Microsoft Word, field has format: special-left-brace_space_XE_space_phrase_space_special-right-brace. To search for fields, use ^d. To insert fields, use Ctrl-F9 or Insert menu and Field command. Page numbers in Index are not links.

Framemaker file

Adobe Framemaker (TM) word-processing program uses a proprietary document format {Framemaker file} with extension FM. You can import files from other formats and export Framemaker files to other formats. Other applications typically cannot open Framemaker files. Adobe Acrobat (TM) can open Framemaker files.

HTML file

Hypertext Markup Language (HTML) is an example of Standard Generalized Markup Language (SGML). Such files (SGML file) {HTML file} are text files.

tags

HTML uses tags to open and close formatting. Tags can be in any order or relation. Tags start with less-than signs and close with greater-than signs.

semantics

HTML has no semantics.

comment

<!-- comment --> inserts comment.

format

HTML files have a document-type line first, heading section second, and body section last.

document type line

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> starts HTML files.

beginning and ending lines

<HTML LANG="en-US"> is after the document-type line. </HTML> is at file end.

heading block

<HEAD> is after <HTML>, to start heading block.

<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8"> names content type for search engines.

<META HTTP-EQUIV="Expires" CONTENT="0"> expires page for search engines.

<TITLE>Title</TITLE> inserts title.

<META HTTP-EQUIV="keywords" CONTENT="keyword1, ..., keyword25"> or <META NAME="keywords" CONTENT="keyword1, ..., keyword25"> specifies up to 25 keywords for search engines.

<META NAME="description" CONTENT="25-word description"> describes HTML pages for search engines, using up to 25 words.

<META NAME="robots" CONTENT="noindex"> excludes indexing by search engines. <META NAME="robots" CONTENT="nofollow"> excludes searching for links by search engines. <META NAME="robots" CONTENT="noindex, nofollow"> excludes indexing by search engines and searching for links by search engines.

<STYLE TYPE="text/css"> starts the list of style attributes. HTML styles include: P, H1, H2, H3, H4, H5, H6, H7, A, and LI. P is paragraph. H1 through H7 are headings. A is anchor for name, id, and references. LI is list element. HTML styles, such as "color: blue" are in braces. text-align: center; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12px; font-weight: bold; font-style: italic; color: red; text-decoration: none; are examples.

<LINK HREF="stylesheet.css" REL="stylesheet" TYPE="text/css"> points to a style sheet.

</STYLE> ends the list.

HTML can use CGI to add programs. <SCRIPT LANGUAGE="JavaScript" TYPE="text/javascript" SRC="path/file.js"></SCRIPT> specifies Java script to run program. <IMG ALT="Counter" SRC="/cgi-bin/counter.pl"> specifies Counter image. <A HREF="http://.../cgi-bin/guestbook.cgi">View My Guestbook</A> uses guestbook.

</HEAD> ends heading block.

body beginning and ending

After heading block, <BODY> starts body block. <BODY STYLE="background-image: url(path/file_name.gif); background-repeat: no-repeat;"> uses the STYLE attribute to specify parameters. At line before </HTML>, </BODY> ends BODY block.

paragraph, heading, and section

<P>...</P> is for paragraph, which has blank lines before and after.

<BR> is for line feed.

<H1>...</H1> is for heading 1. Headings 2 through 7 are similar.

<DIV>...</DIV> is for text section or page division, with blank lines before and after.

<SPAN>...</SPAN> is for paragraph phrase.

<OL> <LI>...</LI> </OL> is for list.

style tag and attribute

<P STYLE="text-align: center; font-family: Verdana, Arial, Helvetica, sans-serif; font-weight: bold; font-size: 12px; font-style: italic; color: red; text-decoration: none;"> specifies parameters.

For font-family, use fonts found on all browsers, such as Courier, Times, Arial, or Helvetica. font-family:sans-serif includes Verdana, Arial, and Helvetica. font-family:serif includes Times and Courier.

For font-size, use font-size:larger, font-size:smaller, or font-size:normal.

For font-weight, use font-weight:bold or font-weight:normal.

For font-style, use font-style:italic or font-style:normal.

For color, use hexadecimal string, such as color:FFFFFF for black and color:000000 for white, or use color name, such as color:blue, color:red, or color:green.

For text-decoration, use text-decoration:none to remove underlines from links.

table

<TABLE BORDER="0" WIDTH="640" CELLPADDING="0" CELLSPACING="0" > starts table, with border, width, and cell size. WIDTH="100%" uses percent. <TR>...</TR> is for table row. <TD COLSPAN="3" WIDTH="100%" ALIGN="left" VALIGN="middle">...</TD> is for table-row detail, such as column entry or line, with column span, width, horizontal alignment, and vertical alignment. </TABLE> ends table.

image

<IMG SRC="/x/x/xxx.gif" WIDTH="15" HEIGHT="10" HSPACE="0" VSPACE="0"> is for image, with source file, width, height, horizontal spacing, and vertical spacing.

jumping

<A HREF="#Glossary">Glossary</A> jumps to same-file position marked by <A NAME="Glossary"></A>. If there is no marked position, program searches for first occurrence in file.

anchor and linking

<A HREF="path/file_name">link_name</A> is for linking to a file or URI by clicking on the link name. <A HREF="path/file_name#ID">link_name</A> is for linking to a file or URI and jumping to the ID in the file. <A HREF="path/file_name.jpg" TARGET="_blank">image</A> opens a new window. <A HREF="http://x/x/xxx.pdf" NAME="x" ONMOUSEOVER="ft(this)"></A> shows something when cursor mouses over text.

URI Escape Characters

Use % for Unicode (and ISO-Latin) hexadecimal numbers. Always encode the following URI characters. space = %20. double quotation mark = %22. # = %23. % = %25. < = %3C. > = %3E. [ = %5B. backslash = %5C. ] = %5D. ^ = %5E. ` = %60 = opening single quote. { = %7B. | = %7C. } = %7D. ~ = %7E. Period, apostrophe, and hyphen are OK. Do not use parentheses, underscore, exclamation mark, or asterisk.

URI reserved characters define syntax. If used in URIs, encode them. $ = %24. & = %26. + = %2B. , = %2C. / = %2F. : = %3A. ; = %3B. = = %3D. ? = %3F. @ = %40.

characters

Unicode (and ISO-Latin) characters 0 to 31 and 127 are ASCII control characters and do not print. tab = 9. carriage return = 13.

HTML recognizes the following Unicode, ASCII, and ANSI characters: blank ! double quotation mark # $ % ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; = ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ backslash ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z right brace left brace | ~ ¢ £ ± µ.

HTML Escape Characters

For other characters or for escaping characters, use &#NNN; for Unicode (and ISO-Latin) decimal numbers or &...; for alphabetic. 000 to 031 have no printing characters. 009 = tab. 013 = carriage return.

032 = sp = blank = space. 033 = excl = !. 034 = quot = double quotation mark. 035 = num = #. 036 = dollar = $. 037 = percnt = %. 038 = amp = & (ampersand). 039 = apos = ' = apostrophe = closing single quote. 040 = lpar = (. 041 = rpar = ). 042 = ast = *. 043 = plus = +. 044 = comma = ,. 045 = hyphen = dash = -. 046 = period = . 047 = sol = / (solidus). 048 to 057 are digits 0 to 9. 058 = colon = :. 059 = semi = ;. 060 = lt = <. 061 = equals = =. 062 = gt = >. 063 = quest = ?. 064 = commat = @.

065 to 090 are letters A to Z.

091 = lsqb = [. 092 = bsol = backslash. 093 = rsqb = ]. 094 = caret = ^. 095 = lowbar = _. 096 = ` (accent grave).

097 to 122 are letters a to z.

123 = lcub = left brace = left curly bracket. 124 = verbar = |. 125 = rcub = right brace = right curly bracket. 126 = tilde = sim = ~. 127 is for Delete.

ISO-Latin characters 128 to 255 are not in the ASCII set and may not print.

Unicode does not use ANSI 128 to 159.

Unicode and ANSI control characters

000 = NUL (Null character). 001 = SOH (Start of Header). 002 = STX (Start of Text). 003 = ETX (End of Text). 004 = EOT (End of Transmission). 005 = ENQ (Enquiry). 006 = ACK (Acknowledgment). 007 = BEL (Bell). 008 = BS (Backspace). 009 = HT (Horizontal Tab). 010 = LF (Line Feed). 011 = VT (Vertical Tab). 012 = FF (Form Feed). 013 = CR (Carriage Return). 014 = SO (Shift Out). 015 = SI (Shift In). 016 = DLE (Data Link Escape). 017 = DC1 (XON)(Device Control 1). 018 = DC2 (Device Control 2). 019 = DC3 (XOFF or Device Control 3). 020 = DC4 (Device Control 4). 021 = NAK (Negative Acknowledgement). 022 = SYN (Synchronous Idle). 023 = ETB (End of Transmission Block). 024 = CAN (Cancel). 025 = EM (End of Medium). 026 = SUB (Substitute). 027 = ESC (Escape). 028 = FS (File Separator). 029 = GS (Group Separator). 030 = RS (Request to Send or Record Separator). 031 = US (Unit Separator).

PDF file

Portable Document Format {PDF file} depends on a format {PostScript} (PS file) from Adobe Systems. PDF files can be unstructured, structured, or tagged, with increasing file-structure information, such as bookmarks, pages, tables, lists, and images. The freely downloadable Adobe Reader application reads PDF files. Adobe Acrobat and Adobe Distiller make PDF files.

SGML file

Standard Generalized Markup Language {SGML file} defines electronic-document structure and content. Structured documents allow searching and semantics.

XML file

Extensible Markup Language {XML file} is a Standard Generalized Markup Language (SGML).

tags

XML uses text blocks begun and ended by tags. Tags can have attributes, which can have values. Well-formed documents conform to XML language.

document type

Document Type Definition (DTD) defines document structure using tag tree. Valid documents conform to a DTD.

types

XML Linking Language (XLL) has link semantics, extended links to other documents, pointers to document parts, and links in both directions. XML Stylesheet Language (XSL) tells how to parse XML documents. Simple API for XML (SAX) allows programming, using tag-sequence events. Document Object Model (DOM) allows programming, using API-object tag trees.

languages

XML languages include Chemical Markup Language (CML), MathML, Bioinformatic Sequence MArkup Language (BSML), Biopolymer MArkup Language (BioML), GAME for Drosophila sequence information, and BlastXML for search output.

data

Modeling, storing, and querying data needs data structure. Data often grows exponentially, has complex relationships, has new data types generated from old data, has new relation types, needs archiving, has many objects with much data, has updates, and has users with different needs, skills, and tools. XML schema adds object-oriented relational database concepts. XML can be for Web interfacing among object-oriented relational databases. Only object-oriented approaches can model data. Object-oriented relational database management systems (OODBMS) have query languages, many relation types, constraints, symmetry, data clustering, many data types, tables, triggers, indexing, inheritance, security, access, methods, and objects. Relation can be not-null, unique, test, and one-of.

3-Computer Science-Software-Database

relational database

Databases have formatted records that allow indexing and searching. Databases {relational database} can have different-format records and relations among formats.

tables

Relational databases store data in two-dimensional tables. For example, table can be about people in a group. Rows are about one object or event, such as person. Columns are fields, properties, classes, or data categories, such as person names and weights.

tables: columns

Columns have value formats. Column values can be numbers, character strings, bitmaps, times, dates, or monetary amounts. Column values can have fixed or variable number of characters. Columns can be empty or require values. Column values can be unique or the same. Column values can be another-column values. Column values can be any sequence value, such as 1 to n.

tables: key column

Tables typically have main column {primary key}. For example, in Person table, primary key is person name or ID. Several columns can link to make primary key.

tables: index

Columns can have indexes. Indexes assign table-row number to column value. Columns can require that each value occur only once or allow values to repeat. For example, person names occur only once, but the same weight can apply to several people. It takes time to make indexes, but indexing speeds searches. Indexing is more efficient if table updates are infrequent.

tables: relations

Two tables cross-reference each other, if they both have same column. For example, Person table can have PersonID column and WeightCategory column. Weight table can have WeightCategory column and WeightAmount category. Both tables share WeightCategory column. Database queries that use both tables can yield WeightAmount for PersonID. WeightCategory column in weight table is reference {foreign key} for WeightCategory column in Person table. Database can allow only weight categories listed in weight table to be values for WeightCategory column in Person table.

trigger

Inserting, deleting, or updating table values can cause {trigger, database} actions on database tables. For example, if Person table lists all people and their groups and if group table lists group members, adding person and his or her group to Person table can automatically add person to Group table.

normal forms

Theory governs table structure in relational databases. Five principles {normal form, database} improve performance speeds and prevent update problems, data redundancies, and data inconsistencies. Tables and records typically have normal forms {normalization, database}, unless performance considerations require non-normalization.

normal forms: First Normal Form

Table records have same number of non-repeating fields. For example, people in Person table have names, weights, and heights, even if some people have no known height values.

normal forms: Second Normal Form

Tables have one primary key. In Person table, name field is primary key, because it identifies person uniquely. Other fields state facts about primary key, such as weight and height, and are not unique.

normal forms: Third Normal Form

Columns are independent of other columns. There is only one column about each property. For example, in Person table, there are not two columns about weight, one for kilograms and one for pounds, or one for weight numbers and one for weight categories. For weights, there can be a Weight table. Non-key fields cannot be subsets of, or have another relation to, primary keys. For example, Person table has name column and does not have nickname column. For nicknames, there can be a nickname table.

normal forms: Fourth Normal Form

Row and column cells have one value, not multiple values. In Person table, name column has only best name, not alternative names, and language column has only preferred language, not all languages spoken. For nicknames, there can be a nickname table. For languages, there can be a language table. In Person table, each column is only about one property, not multiple properties. For example, Person table does not have a name-language column. For names and languages, there can be a language table.

normal forms: Fifth Normal Form

If two columns relate, and relation does not have direction {symmetric constraint}, use several tables with as few fields as possible, rather than fewer tables with more fields. For example, to relate person, weight amount, and weight category, Person table has name and weight category columns, and weight table has weight amount and weight category. Person table does not have person, weight amount, and weight category columns. For asymmetric constraints, database must have two tables.

tablespace

Single files {tablespace} can store related tables. Tablespaces represent shared columns only once, so memory size and computer processes decrease and processing speed increases.

Tablespace tables {cluster} {data cluster} can share columns. Clusters place related information in one physical location and allow overlapping indexes. Clustering works well for adding data to tables but is not good for tables that have many deletions or updates.

pivoting of data

For tables, cell values in any column or row can become columns or rows {pivoting}|. The new table shows a different perspective on data, along a new dimension. Pivoting can correlate two table variables.

empty cells

Cells can be empty (NULL). Pivoting treats NULL the same as other cell values. Pivoting can make fewer cells and so fewer NULL cells.

example

Table has Days columns D1, D2, ... and Persons rows P1, P2, ... Table cells have Locations L1, L2, ..., with L1 in D1-P1 cell, and so on. See Figure 1. You can pivot table to make table with Days columns, Locations rows, and Persons in cells. See Figure 2. Cells fill by rule: Days and Locations have Persons. You can always pivot new table back to old table.

data rows

You can pivot table on one column to put another column in cells. For example, table can have Day, Location, People, Thing, and Amount columns. Row records are Days, Places, People, Things, and Amounts combinations. You can pivot on Day column and rows, to put Amount in cells. Now table rows are Thing, People, and Place combinations, and columns are Day values listed in original-table cells. Cell Amount matches Day, Place, People, and Thing. If new table has same or greater cell number as original table, you can pivot back to original table.

security policy

Databases need security {security policy}: database roles (USER and ADMINISTRATOR), role system privileges for each application, role object privileges for each application, users, and row-level security.

Application Security creates roles and grants them privileges for one application. Roles and privileges for other applications should not affect the application. Users should not be able to alter roles and privileges inside or outside of the application. Application security must include SQL*Plus, SQL*Loader, and all other such available applications which might allow unrestricted SQL statement execution.

Application Context sets up session-based attributes. Each user has attributes, such as a user name, a role, an application, tables and views authorized to access, and other information which can be used to determine context. The context is used to determine what is accessed in the session.

Access Control allows row-based security for tables and views using Oracle functions attached to the table or view which is the basis of an application. When a user enters a SELECT, INSERT, UPDATE, or DELETE statement on the table or view, Oracle modifies the statement to include a WHERE clause which limits the data affected.

A schema is owned by a user. Schemas are accessible to other users when privileges are granted by the owner. The USER is the schema which contains all objects.

triggering

Database change or command use {event, computer} can trigger action {triggering, database}, such as displaying report or executing program.

3-Computer Science-Software-Database-Data Versioning

version number

Every time data changes, it can have higher identifying number {version number}. Databases can keep previous record versions {version control}.

generation in versioning

Version branches {generation, data} start with generation 1. Generation and version combinations are unique.

3-Computer Science-Software-Command

command to computer

Commands {command, computer} {executable command} execute actions, such as login, logout, show user name, or change password.

execute command

Commands {execute command} can save data to database, like Commit, and start background processing.

commit command

Commands {commit} can save data to database. Commit saves everything since previous Commit command, Rollback command, or application opening.

rollback command

Commands {rollback} can discard all unsaved data and return to state at previous Commit command or application opening.

login

Commands can allow user into computer system {login}.

logout

Commands can allow user to exit computer system {logout}.

3-Computer Science-Software-Component

component of system

Software parts {component, computer} can call other applications, products, or components.

Application Programming Interface

Components {Application Programming Interface} (API) can share inputs and outputs.

Database Management System

Components {Database Management System} (DBMS) can store and retrieve database data.

Enterprise Java Beans

Component architecture {Enterprise Java Beans} (EJB) can deploy object-oriented distributed enterprise-level applications. Applications using Enterprise Java Beans architecture are scalable, use transactions, and can have multiple users.

Graphical User Interface

Users see window sets {Graphical User Interface} {user interface} (GUI) (UI), containing text fields, selection lists, check boxes, buttons, and other controls, in which to enter or view data and to issue commands.

module in software

Software components, applications, and products have subsets {module, software} {software module} that perform commands, actions, functions, or operations.

3-Computer Science-Software-Security

computer security

Computation can have constraints on users and data {security, computer} {computer security}.

A secure computing environment involves identifying a user at logon or when accessing services (authentication) and assigning privileges to directories and files to users or groups of users (authorization).

A security policy establishes administrative procedures for reacting to break-ins, backing up data, logging on, allowing user access, and setting appropriate security levels for hardware, software, application programs, and network services.

A security configuration for a computer involves the hardware, software, application programs, and network services and includes administrative procedures, physical security, installation, network access considerations, user training, and software security, such as user accounts, object permissions, auditing, and registry keys.

C2 Security Level

The National Computer Security Center (NCSC) of the United States performs software security evaluations for operating systems and publishes the results in a book entitled "Department of Defense Trusted Computer System Evaluation Criteria, " also known as the "Orange Book."

The C2 security level has the following main requirements:

The owner of a resource (such as a file or directory) must be able to control access to the resource.

The operating system must protect objects from unauthorized reuse by other processes. (As examples, freed memory contents cannot be read by another process, and data from deleted files cannot be accessed.)

To access the system, each user must enter a unique name and password. The system must be able to track all user activities using the unique identification.

System administrators must be able to audit security-related events, and access to audit data must be limited to authorized administrators.

The operating system must protect itself from external interference or tampering (As examples, modification of a running system or modification of disk files is prevented.)

The NCSC document "Introduction to Certification and Accreditation" discusses how to configure the physical and software computing environment. Certification is the use of the computer system in a specific environment. Accreditation is an evaluation of the certification plan by administrators.

Network Security

Network security evaluations are contained in the "Red Book" of the NCSC.

Network

Isolate the workstation from the network if possible. Preferably use a network entirely contained in a secure building. If network cables are in unsecured areas, use optical fiber cables to prevent wiretaps.

Internet

Do not connect the workstation to the Internet.

FTP

If the workstation is on the Internet, file transfer protocol (FTP) might be available. FTP allows public file access via anonymous log on. There is a user account for anonymous logons (GUEST by default) and a default home directory.

If FTP must be made available, create a user account specifically for FTP and require a password. Do not assign the account to any user groups. Do not allow the account the user right to "Logon on Locally."

As the home directory, assign a separate disk partition, with no secure files or directories.

Remove the NetBios Interface.

Security Administration

System administrators should follow specific rules for effective computer security:

Allow few users to have Administrator privileges. Always log out of the Administrator account when not using the workstation.

Set computer security to the minimum level required to protect resources to minimize setup, maintenance, and security evasions (such as password sharing).

Document backup and all other security procedures to create a security policy.

Always follow the procedures of the security policy.

Monitor security logs regularly and adjust security policies and settings as needed.

Use an up-to-date anti-virus and anti-Trojan Horse program.

Use security mailing lists to be aware of virus attacks.

Check software vendors for recent security fixes.

Always update software with the latest service pack.

Use the Backup utility to back up the registry, files, and directories regularly. Allow Backup privileges only to Administrators.

Set the security features of applications to work with computer security features.

Security administration for a workstation should include physical security, installation, network security, user training, and software security (such as user accounts, object permissions, auditing, and registry keys).

Physical Security

Physical security involves computer and cable location and locking, physical access to the CPU and removable media, power on and rebooting from floppy disk or network, testing of the CPU and peripherals, hard disk set up and maintenance, and surge protection.

Access

Protect the computer workstation from theft. Place the computer in a case that requires a key to open and store the key away from the computer. Attach the computer to a wall or desk with a locked cable. Allow access to the room only to authorized persons. Establish procedures for moving or repairing the computer.

Expose only the computer's keyboard, monitor, mouse, and printer to users. Prevent unauthorized users from touching the power or reset switches, the CPU, and the removable media drives by locking the case or locking the entire CPU in a ventilated enclosure. Access to drives can be limited by using a locked opening.

Booting

Use a workstation with a power-on password to prevent unauthorized personnel from starting another operating system. Set the power-on password using the vendor's instructions, typically by changing the computer's BIOS setup.

Remove the floppy disk drive or disable a floppy-based boot. Also, remove the network card if possible. Allow booting only from the fixed disk.

Edit the boot.ini file so that the boot time-out is 0 seconds, to prevent booting another operating system.

Lock the CPU to physically prevent another operating system from being loaded.

Testing

Test the processor using diagnostic integrity tests.

Test peripherals using the integrity tests of the product.

Hard Disk Maintenance

Make the entire hard disk one file system. Do not use the FAT file system, which has no security features.

Scan and defragment disks regularly to isolate bad sectors and maintain performance.

Surge Protection

Use a surge protector or power conditioner to protect the computer and its peripherals from power spikes.

Installation

Use a password at least nine characters long with some non-alphabetic characters in the first seven characters.

Create an Emergency Repair Disk (ERD) and lock the disk in a secure area (the ERD contains security information).

Set up a special location called the Alternate Data Location, recorded in the Registry.

For Network Protocol, select only TCP/IP.

Use a fixed IP address. Do not use DHCP.

Add the workstation only to a secure domain.

Do not install by disk duplication (which uses the xcopy command).

Do not install any other operating systems on the computer.

After installation, reboot Windows and log on as an Administrator.

Check the Installation Report.

User Training

User training involves use of passwords, proper log on, file protection for copies, data deletion at log off, necessary restarts, proper log off, and use of XXXX file checksums.

Passwords

Users should follow the password rules:

Memorize passwords (never write them down).

Use passwords longer than five characters.

Change passwords frequently.

Never reuse previous passwords.

Never use easily-guessed passwords or words in a dictionary.

Use a combination of letters and numbers.

Log On

Users should always press CTRL+ALT+DEL to log onto Windows, in order to obtain the secure Windows log-on screen. Other logon methods or dialogs risk use of a substitute log-on screen designed to collect account passwords.

File Copies

When a file is copied to a new directory, the file acquires the permissions of files in the new directory. The protections assigned to the document in the old directory are lost.

After copying a file to a new directory, users should set the protections on the file, or alternatively, first move the file to the new directory and then copy the file back to the original directory to reset the protections.

Data Deletion

Users should remove sensitive data from floppy disks or CD-ROM drives before logging off.

Restart

Users should restart the computer before using the tape drive.

Log Off

Users should log off or lock the workstation when not at the computer. Users should set the workstation to lock automatically if not used for a period of time. A 32-bit screen saver with the Password Protected option has this feature.

Checksums

All data files include a checksum value. Compare file checksums to determine if the file has been modified by any other application or any outside process.

Software Security

Software security involves user and group accounts, auditing, file and directory permissions, and registry key settings. Software security protects against accidental or deliberate changes to the data files, the operating system software, and the computer set up and security configuration.

Check the user accounts, security settings, trust relationships, network access points, and the registry regularly. Check for inconsistent permissions of users and objects, user accounts that should be disabled, and unauthorized network connections.

User and Group Accounts

Create users and user groups. Assign users to user groups.

Password and Account Lockout Policies

Set password and account lockout policies for user accounts.

Set the maximum password age to 42 days. Allow the password to change immediately. Set the minimum password length to six (or more). (Make sure that the Permit Blank Password box is not checked.) Set the password uniqueness so that no password history is kept.

Set account lockout to allow only three invalid logon attempts, to reset the count after 60 minutes, and to have a duration of 60 minutes.

User Rights and Auditing Policies

Give each user or user group user rights.

Grant privileges to objects and procedures.

File and Directory Permissions

Control access to files and directories.

Event Auditing

Select auditing options and Audit Policies.

Alerts

Set administrative alerts (electronic mail messages) to System Administrator if any attempt at unauthorized use or other security problem occurs.

digital rights management

Software {digital rights management} (DRM) can prevent copying files.

rootkit

Applications {rootkit} at root-user level can hide program files, such as copy-protection programs.

row-level security

Methods {row-level security} can control access to project data based on role assigned to a user by the administrator, because projects and roles are linked. The table privileges granted to a role are removed. A package has a function to make the predicate for the queries. Policies use the predicate-creating function on all statements (SELECT, INSERT, UPDATE, DELETE) on the project tables. Depending on the role assigned to the user and the projects paired with that role, users logging in will only see the protocols or experiments associated with the allowed projects.

3-Computer Science-Software-Security-Challenge

computer challenge

Applications can request password, fingerprint, or electronic signature {challenge, computer} {computer challenge}, before allowing access to information or functions.

electronic signature

Users must enter username and/or password {electronic signature} before committing data to database. A field holds a unique code based on user ID and password. Electronic signatures include the user name, date, time, role of signer (review, approval, authorship, or ownership), and digital signature. Digital signatures are generated using biometrics or cryptography.

Saving files is the typical example of an event that requires an electronic signature. Creating an electronic signature displays the role to be applied and requires entry of the user name and password; if multiple signatures are required in one user session, later signatures require only a password. Electronic signatures are only assigned to verified individuals. Electronic signatures cannot be assigned to someone else. Persons with electronic signatures certify that their electronic signatures are to be legally equivalent to handwritten signatures.

3-Computer Science-Software-Security-Data

auditing of data

Programs {auditing} can record who changed database data, when, and why, as shown in audit logs.

keychain for data

Users have identification and authentication information, plus information about what user can access {keychain}.

profile of computer user

Users can have permission to execute specific functions {profile, computer}.

static data

Users do not update system data {static data}, such as instrument locations, entered by administrator at system setup or upgrade.

3-Computer Science-Software-Security-Users

user of computer

People {user, computer} can access software or data, after authentication.

root user

Users {root user} can control whole computer.

computer administrator

Users {administrator, computer} {computer administrator} can have access to whole system have privileges to add, remove, or edit all data and manage access control for other users.

datagroup

Users can access only data in their datagroups {datagroup}.

role for user

Users have permission to execute specific functions {role, computer}. Roles control user access to application functions. Interfaces can display available commands and not display unavailable commands.

security group

User groups {security group} can access data types in special ways: read/view, update, create, and/or delete.

user group of computer

Users, such as technicians, administrators, scientists, or guests {user group}, can have same privileges to access data and functions.

3-Computer Science-Software-Operating System

operating system

Software {operating system}| can allocate CPU resources. Operating systems determine peripheral number and type. They handle input-output operations, manipulate and process files, manage and allocate memory, begin and end jobs, and keep accounting, data-loading, job-priority, error-checking, backup, and recovery records. They put system description {system configuration} in memory. They can execute several programs at once {multiprogramming}, using swapping and executive control. They can allot maximum time {timeslicing} to program before switching to another. Operating systems can have application programs, which perform business or fundamental functions.

Unix

The most common operating system {Unix} has many variations. At login prompt, enter username. At password prompt, enter password. To change password: passwd followed by old password, and repeat new password. To log out: logout. To create a directory: mkdir directory-name. To display file: cat filename or more filename. To print file: lpr filename. To list files and directories: ls directory-name or filename. To rename files and directories: mv source-filename destination-filename, or mv source-filename destination-directory, or mv source-directory-name destination-directory-name. To copy files: cp source-filename destination-filename or cp source-filename destination-directory. To delete file or directory: rm filename or rmdir directory-name. To change working directory: cd directory-name.

Pathnames use forward slash. ~ is Home directory. . is working directory. ..is parent of working directory.

wild cards

? is single character wild card. * is arbitrary number of characters.

redirecting

command-name > filename - System types output of command to file rather than screen, replacing current contents of file, if any.

command-name > > filename - System types output of command to file rather than screen, appending to current contents of file, if any.

editing files

vi - enter text editor

search files

grep search-string filename to type lines containing the string in a specific file.

online documentation

To see online Man Pages: man command-name.

3-Computer Science-Software-Operating System-Language

assembler

Operating-system programs {assembler}| can change programs into assembly-code language.

compiler

Operating-system programs {compiler}| can change high-level language program into computer language used by computer hardware, such as binary code.

interpreter program

Operating-system programs {interpreter program} can translate instructions from high-level program to binary code and runs computer program immediately.

3-Computer Science-Software-Operating System-Parts

controller module

Operating-system programs {controller module} can control operations.

data management program

Operating-system programs {data management program} can manage data flow.

diagnostic program

Operating-system programs {diagnostic program} can diagnose problems.

emulator

Operating-system programs {emulator} can represent another computer.

executive control program

Operating-system programs {executive control program} can control several programs and interfaces.

format maker and user

Operating-system programs {format maker and user} can print or display formatted job output.

generator program

Operating-system programs {generator program} {object program} can make object programs from parameters.

initial program loader

Operating-system programs {initial program loader} can start computer system by placing operating system in memory and starting CPU.

job scheduler

Operating-system programs {job scheduler} {job control language} can perform program commands most efficiently.

maintenance program

Operating-system programs {maintenance program} can be for on-line testing.

memory dump program

Operating-system programs {memory dump program} can read memory contents.

operator routine

Operating-system programs {operator routine} can load programs.

simulator

Operating-system programs {simulator} can represent models.

sorting device

Operating-system programs {sorting device} can organize different memories.

utility program

Operating-system programs {utility program} can track or organize computer system and memory.

workflow language compiler

Operating-system programs {workflow language compiler} can accept and store jobs.

3-Computer Science-Software-Operating System-Operations

computer operations

Computers have operations {computer operations}. Programs can run immediately {interactive processing} {on-line processing} {real-time processing}. Programs can execute later, typically at night when CPU usage is low {batch processing, computer} {off-line processing}. On-line transactions take time {response time} {flowtime} {float time} to process [Luce, 1986].

multiprocessing

Computer systems can have two or more processors {multiprocessing}. Job-control program decide job types to do and their priority and puts jobs in job queue.

swapping

Operating systems can add and remove program parts {swapping}| {memory swapping} from storage devices into memory {virtual memory}, to use only needed program sections. Virtual memory uses either fixed-length pages or logical program segments.

throughput

Operations process many characters per second {throughput}|.

timesharing

Several users can use CPU at once {timesharing}|, because CPU is fast compared to input rates.

3-Computer Science-Software-Algorithm

algorithm

Ordered instruction sequences {algorithm}| {recursive procedure} can perform functions in finite numbers of steps. Algorithms start from input data, process data, and make output data. Algorithms use finite numbers of symbols. Computing is algorithm automation and execution.

components

Algorithms use non-algorithmic components, such as containers, container adapters, function objects, and file manipulations. Containers are vectors and matrices. Container adapters are point graphs and edge graphs. Function objects are for sorting, generating random numbers, having properties, and comparing numbers.

input

Input requires redundancy to overcome noise.

output

Performing algorithm gives results {enaction}. Results are in code and have no intrinsic meaning. Result meaning relates to coded input.

processing

Algorithms can be recursive and nested and use feedback and feedforward. The shortest way to predict algorithm results is to run algorithm. The most compressed algorithm description is algorithm itself.

Church thesis for functions

Computable functions can be partial recursive functions {Church's thesis, algorithm} {Church thesis, algorithm} {Turing's thesis}.

3-Computer Science-Software-Algorithm-Kinds

approximation by discrete

Using time-interval midpoints, discrete functions can approximate continuous or non-discrete functions {approximation by discrete function} {discrete function approximation}.

non-deterministic computer

Ideal computers {non-deterministic computer} can choose better at decision points. Real computers {deterministic computer} choose by approximate methods.

non-linear processing

Processing {non-linear processing} can describe quantity interactions. Multiplications combine two or more different measurable things to get new thing. Multiplication can reduce data from several quantities to one quantity. For example, gravitational force multiplies two interacting particle masses and then divides by distance between them. Multiplicative effects include division, differentiation, and integration. Differentiation reduces interaction number. Integration increases interaction number.

3-Computer Science-Software-Algorithm-Kinds-Analysis

forward analysis

Analysis algorithms {forward analysis} can use assumptions about node relations to go from one node to another, to avoid costly and time-consuming backtracking.

frame analysis

Analysis algorithms {frame analysis} can use object-class variable, parameter, or property-type lists, with default values. However, such lists do not use "OR" relations well.

3-Computer Science-Software-Algorithm-Kinds-Search

alpha-beta technique

For hierarchies or networks, heuristic search methods {alpha-beta technique} {minimax algorithm} repeatedly evaluate nearby situations to check if they are nearer goal situation.

scoring

Alpha-beta technique assigns scores to all evaluated situations {node, hierarchy}. Score determines which nodes to check further.

node

Nodes have immediate-successor nodes. Alpha-beta technique checks beyond current nodes minimum distance and maximum distance {depth, search}. Node scores decide which immediate successors to check further. Alpha-beta technique removes low-scoring nodes {pruning} {alpha-beta pruning} or progressively worse nodes {tapered pruning}.

depth

Alpha-beta is depth first search, rather than width first. Alpha is maximum lower bound and can only increase. Beta is minimum upper bound and can only decrease.

generate and test algorithm

Techniques {generate and test algorithm} for reaching goal situations can produce random or directed trials and check results.

Grover algorithm

Subtract searched-for message wavelet from possible wavelets to find wavelet that makes zero {Grover's algorithm} {Grover algorithm}. Invert wavelet. Probabilities stay the same. Find average amplitude. Invert wavelets around average amplitude. Searched-for wavelet magnifies amplitude while others reduce. Repeating converges on searched-for wavelet.

heuristic search

For hierarchical networks, searches {search, computer} {computer search} can go first to lower nodes {depth first search}, stay at same level {breadth first search}, or use evaluation function {heuristic search}|. Heuristic search tries to reach goal. It starts from current situation, evaluates nearby situations to short depth to see if goal is closer or farther, chooses only nearby situations that are closer, and then repeats, until exhausting all new nearby situations or finding goal.

evaluation

Evaluation uses scoring methods. Searching requires assigning probabilities. Search eliminates nodes by checking if they have successors, by assigning scores, or by checking for duplicates. Search can minimize risk {minimax, search}. Heuristic search can evaluate search steps to decide whether to go backward or forward {Shannon paradigm}. Search can use other strategies {set-of-support strategy} {unit preference strategy} {linear input form strategy} {ancestry-filtered strategy}.

hill climbing

Techniques {hill climbing}| for reaching goal situation can find path from initial to goal situation, while always maximizing score. Hill climbing locally improves answer until reaching optimum. Hill climbing often stops at solution that is not the best globally, because possible solutions are independent and are in different space locations, with valleys between them. Better hill climbing requires overview to check larger regions.

hypothesize and match algorithm

Techniques {hypothesize and match}| for reaching goal situation can make many examples to compare to true goal {match, search} or make and iteratively test better hypotheses until one matches.

resolution procedure

For reaching goal situations, techniques {resolution procedure}| {resolution principle} can check if all formulas are true and check if negative of formula to prove is unsatisfiable, to imply formula. Resolution procedures work if formulas, expressed in predicate calculus, describe situation space. Formulas must allow causality, ability, temporality, recursion formulas, and spatial relations.

situation space

Problems can have initial situations, possible situations, actions moving from one situation to another, action relations, and goal situations {situation space}|. Solving problem involves finding path from initial situation to goal situation, while avoiding traps.

system inference model

Techniques {system inference model} for reaching goal situations can find function or relation between initial situation and goal situation or build relations using examples and counterexamples.

3-Computer Science-Software-Algorithm-Polynomial

polynomial time

Problems {P problem} can be solvable with polynomials {polynomial time}| {P time}. Time to solve them increases as polynomial-first-term power, as number of items grows. Linear growth has power one: n^1. Quadratic growth has power two: n^2. Cubic growth has power three: n^3.

Polynomial-time problems include whether number is prime or not, if two lists have all members paired, and if all towns on maps have paths to other towns.

exponential

Problems {non-deterministic problem} {NP problem} can grow superpolynomially or exponentially in time, resources, or memory {non-deterministic polynomial time} {NP time}, as number of items grows. NP problems include all P problems.

Konigsburg bridges problem is an NP problem. Superpolynomial problems {subset sum problem} can try to find sets of numbers that add to zero from a large number set. Can a set of boxes fit in a larger box? Do three-color maps have no neighboring countries with same color?

Evaluating proposed solutions to NP problems requires polynomial time.

NP-complete

NP problems {non-deterministic polynomial time complete} {NP-complete} can be the most general. NP-complete problems include all NP problems. Quantum computers cannot solve NP-complete problems in P time, but can solve some NP problems in much faster NP time, by using specific problem features.

satisfiability problem

People have conflicting demands, so a problem is how to satisfy people {satisfiability}| {satisfiability problem} (SAT). Satisfaction depends on others' choices. Satisfiability problems are NP-complete, because they scale exponentially.

3-Computer Science-Software-Finite-State Machine

finite-state machine

Software machines {finite-state machine} can have a finite number of possible states.

automata theory

Finite strings can map to finite strings {automata theory}.

symbols

Systems have finite symbol sets, such as 0 or no symbol and 1.

strings

Finite tape has segments, each with one symbol. Segment series make symbol series.

read and write

Tape reader reads one tape segment. Tape writer writes one tape segment. Tape mover moves tape one segment forward or backward.

tape

Tape has input symbols and starts at initial position.

state

Automaton starts in initial internal state. Automaton changes state in response to rules. Controller has a finite number of possible states.

rules

Given current state and symbol, functions {transition function} {next-output function} tell which symbol to write and where, functions {next-state function} tell what next controller state is, and functions {next-move function} tell whether to move tape, read tape, or write on tape.

processing

Controller decides what tape mover, tape writer, and tape reader do at next step, based on symbol reading, controller state, and rules. When automaton stops, original string has become new string.

algorithm

Automatons can represent any computer program or algorithm.

3-Computer Science-Software-Graphics

computer graphics

Image files {vector file} {geometric file} can use mathematical formulas that software {object-oriented graphics} {vector graphics} {computer graphics} {graphics} {draw program} manipulates. Vector-graphics images transform easily, look good on higher-resolution displays, and use less memory than bitmaps.

fonts

Scalable fonts {True Type font} {vector font} {scalable font} {object-oriented font} {outline font} use vector graphics.

parameters

Main parameter is geometric-object type, such as rectangle. x, y, and z coordinates locate figure. Width and height are dimensions. Lines have color and size. Fill has color, opacity, orientation, and pattern.

spline

Splines represent lines and can represent boundary lines that divide surfaces into polygons.

surfaces

Closed surfaces can be polygons, such as triangles. Surfaces can be parallel lines or grids.

volumes

Splines and generalized ellipses or ellipsoids can represent volumes.

formulas

Vector graphics uses formulas for points, lines, splines, polygons, circles, ellipses, Bézier curves, Bézier splines {bezigon}, text in Bézier curve fonts, Catmull-Rom splines, NURBS, and rectangle bitmaps. For example, circle information includes radius, center point, line style, line color, fill style, and fill color. Formulas can combine.

formulas: transformations

Most formulas allow transformations, such as rotation, translation, reflection, scaling, stretching, and skewing. Programs can perform logical and set operations. Programs can also add surface-texture bitmaps, add shading, and smooth irregularities.

bit map

Images can be pixel arrays {bit map} {raster file} that software {raster graphics} manipulates. Programs {paint program} can make bit maps smaller or larger, but enlarged images have blank or repeated areas. Vector graphics convert to raster graphics for dot-matrix printers, laser printers, and display monitors, but not plotters.

Bezier curve

Computer-graphics algorithms {de Casteljau's algorithm} {Farin-Boehm algorithm} can evaluate parametric curves {Bézier curve} or surfaces {Bézier surface}. Linear, quadratic, and cubic Bézier-curve {Bézier polygon} splines can draw any shape.

history

Paul de Casteljau invented de Casteljau's algorithm [1959]. Pierre Bézier of France designed automobiles [1962].

equations

Lines can use two points P0 and P1 {control points} and have equation f(t) = (1 - t) * P0 + t * P1, where 0 <= t <= 1. Quadratics can start at P0, go toward P1, and end at P3: f(t) = (1 - t)^2 * P0 + 2 * t * (1 - t) * P1 + t^2 * P2, where 0 <= t <= 1. Cubics can start at P0, go toward first P1 then P2, and end at P3. f(t) = (1 - t)^3 * P0 + 3 * t * (1 - t)^2 * P1 + 3 * t^2 * (1 - t) * P2 + t^3 * P3, where 0 <= t <= 1.

interface

Drawing programs display control points, which control lines.

level set method

Real functions can have domain-value sets {level set} {fiber, set} that make function constant. Real-equation roots are level sets. For two-dimensional domains f(x,y), level sets are curves {implicit curve} {isocontour}. For three-dimensional domains f(x,y,z), level sets are surfaces {implicit surface} {isosurface}.

function

Functions are positive inside surface, zero on surface, and negative outside surface. At points, function gradient is perpendicular to level-set surface.

shape

Closed planar curves can be isocontours. Closed surfaces can be isosurfaces. Shape boundaries are level sets. Shapes have real-function positive values. As object changes, level-set function translates by non-parametric methods {level set method} {Eulerian approach} (Stanley Osher and James Sethian) [1988].

ray tracing

Computers can test all rays entering screen to see where they land on object-indexed kd-tree scene {ray tracing} {ray processing unit} (RPU). Ray tracing can check for shadows, reflection, refraction, and color.

graphical processing unit

Rasterization software renders three-dimensional scenes for two-dimensional screens {graphical processing unit} (GPU). GPU first makes scene into independent plane polygons, typically triangles. It must find which ones are closer {z-buffer}. Because light reflects from objects onto other objects {global illumination}, GPU must later add indirect light.

3-Computer Science-Software-Programming

computer programming

Steps in making computer programs {computer programming} {programming, computer} are defining problem, creating algorithm to solve problem, making flowchart to see how to implement algorithm conceptually, writing program using language and following flowchart, and checking program for errors.

computer program

Computers can process problem-solving algorithms {computer program}. Computer programs are explicit formal processes to generate output from input and internal settings. Programs have instruction sequences.

types

User programs perform arithmetic calculations, word processing, or spreadsheet manipulations. Utility programs perform functions about files and directories. Environmental programs work in background to perform accounting, memory-utilization, and scheduling functions.

making

Set goals or requirements. Develop functions to achieve goals. Design how to implement functions. Implement actual code.

module

Programs can have small independent programs {module, program}, to reach intermediate goals.

errors

Languages have special commands or techniques for error or exception handling, which replace IF ... THEN ... statements, prevent crashes, give needed information about errors or warnings, and provide logging information.

process

Code development follows standard process, uses standard methodology, and has life cycle. Requirements state involved units and required deliverables. Flow charts, such UML diagrams, show workflows, inputs, outputs, and use cases.

program structure

Programs have subunits {program structure}, such as declarations, executable units, loops, functions, subroutines, procedures, and recursive or reentrant subunits. Program have data types, such as arithmetic, Boolean, alphanumeric, formal or algebraic, string, list, vector, array, or hierarchical. Program statements assign variables or values, handle alphanumeric data, control sequences, make decisions, input, output, debug, store, and operate on system statements.

addressing in program

Programs can use addresses {descriptor, computing} to locate program segments or data blocks {addressing}. Descriptors contain addresses pointing to program-segment or data-block locations, word counts indicating program-segment or data-block sizes, and descriptor-sequence descriptor bits {presence-bit}.

collection in program

Sets {collection} can have same-type objects {homogeneous collection} or different types {heterogeneous collection}.

debugging in program

Checking {debugging}| programs for errors follows programming.

decision table

Stored value arrays {decision table} {lookup memory} can allow result look-up for already-performed calculations, rather than performing calculations.

instruction in program

Processing operations {instruction, computing} need two steps. First, get instruction from storage and put it in instruction register. Then get data from address and put it in data register. Instructions can specify many addresses, including next instruction address. CPU has 30 basic instructions.

stack

Instead of using addresses, instructions {zero-address instruction} can specify stack, stack dictionary level, and dictionary-level index value {address couple}.

program

Instructions are elementary switches or gates {microfunction} and so are small programs {microprogram}.

open-closed principle

Existing functions can be open for extension to new requirements but closed for modifications affecting published interfaces {open-closed principle}.

operations in program

Operations {operations, program} on input values give output values. Operations include all arithmetical operations. Operations {let command} {set command} can calculate function value. Operations {if ... then ... commands} {conditional command} can check statement truth and perform actions. Operations {for ... next commands} {loop command} can repeat instruction sets over index-value ranges. Operations {goto command} {subroutine} can jump to another instruction block.

Polish notation

Statements can have operators and operands in correct sequence to execute them {Polish notation}, requiring no addressing, storage, or retrieval.

set-based analysis

Program variables can be infinite value sets {set-based analysis} (SBA), so program ignores variable dependencies but considers all data and data structures.

string operation

Alphabetical operations {string operation} can extract sequence {string, text} parts {substring}. String operations can find string location {index, string} in another string. String operations can partition string to make array.

workflow of system

Logical-step series {workflow}| start from input and use processes and decisions to reach output, typically using branching paths.

3-Computer Science-Software-Programming-Architecture

software architecture

High-level function-organization description {software architecture} {system architecture} defines system.

computer system

Components include applications, technical services, integration services, business services, and data services {computer system}.

Common Object Request Broker Architecture

Architectures {Common Object Request Broker Architecture} can have object-oriented ways to handle data between clients and servers, using Interface Definition Language (IDL) and Internet Inter-ORB Protocol (CORBA).

envelope in software

execution environment {envelope, computing}.

implementation model

Models {implementation model} can describe function logical and physical representation.

overlaying in software

Modules can have use in several programs {overlaying}.

punch-out in software

User-interface sections {punch-out} can be for multiple applications.

Remote Method Invocations

Method invocations {Remote Method Invocations} (RMI) can use Java data model.

toolkit in software

Related reusable class sets {toolkit} provide general functions.

unified process software

Integrated project stages, methods, and principles {unified process} develop and maintain software.

value object

Objects {value object} transfer data between presentation and domain layers.

3-Computer Science-Software-Programming-Architecture-Design

software design tools

Tools {software design tools} can check high-level design models {model checking}, using automated reasoning on structure language, to prove algorithms have no counterexamples or contradictions. Integrated-circuit design uses model checking. Systems have object operations, mappings, and relations, with assertions. Design-checkers try to find cases in which assertions are not true, so designers can exclude those cases.

contract-based design

Designs {contract-based design} can specify contracts between user and service provider. If user provides requisites {pre-conditions}, then service provider guarantees service will perform functions and give results {post-conditions}.

responsibility-driven design

Starting with requirements, specifying functions and designing objects {responsibility-driven design} can meet requirements.

top-down design

Designs {top-down design} can use modules, which contain submodules, which contain sub-submodules, and so on.

3-Computer Science-Software-Programming-Architecture-Framework

framework in software

Abstract-class sets {framework} can work together in reusable designs.

request-response framework

Frameworks {request-response framework} can be integration services that send service requests to technical services, applications, and business-model instances and receive responses. Service-request {request, computer} execution environment can include required input. Service-response {response, computer} execution environment can include output.

services framework

Frameworks {services framework} can define and specify service uses.

3-Computer Science-Software-Programming-Architecture-Layers

software layers

System components {software layers} can be for applications, technical services, integration services, business services, and data services.

application layer

Software layers {application layer} can include installers and user interfaces and use business and technical services, through integration services. Interfaces are for navigating, querying, calculating, displaying, and reporting.

business layer

Software layers {business layer} can include instrument controls, analysis tools, quality-control modules, parameter settings, queries, and business objects. Models {business model} can be business-object content, behavior, rules, and interactions. Data objects {business object} are in systems. Service groups {business service} access and control shared domain-specific service interfaces, such as instrument controls and data.

data layer

Software layers {data layer} can include auditing, ID, password, authentication, persistence, and relational database. Implementation-model subset {data model} describes persistent procedure, trigger, and constraint logical and physical data representation.

domain layer

Software layers {domain layer} can contain modules working with data objects. Business-model subsets {domain model} can have business types.

integration layer

Software layers {integration layer} can include request-response, instrument, workflow, directory, and messaging services. A service group {integration service} includes request-response framework, architectural framework, and services that access and control shared services.

presentation layer

Software layers {presentation layer} can contain user interfaces.

3-Computer Science-Software-Programming-Architecture-Services

software services

Querying, versioning, or persisting data {system service} {software services} happens upon request for service or system function. Software components {service provider} provide service functions, such as for instrument runtime or messaging. System-architecture primary services allow other-service development.

Java Database Connectivity

Java class and component-library APIs {Java Database Connectivity} (JDBC) can allow Java applications to communicate with database server, outside database software.

Java Message Service

Services {Java Message Service} (JMS) can publish and listen for messages.

Java Naming Directory Interface

Java extensions {Java Naming and Directory Interface} (JNDI) can provide API for accessing directory and naming services, such as LDAP, Novell Netware NDS, CORBA Naming Service, and naming services provided by EJB servers. EJB servers organize beans into directory structure and provide JNDI driver service provider for accessing directory structure.

naming service

JNDI database {naming service} contains named objects, with no attributes.

technical service

Infrastructure services {technical service} can be for applications and business services: logging, security, exceptions, and system management.

3-Computer Science-Software-Programming-Languages

programming language

Computer instructions have exactly defined and limited vocabulary, syntax, and grammar {formal language, programming} {programming language}| {computer language}, with no ambiguities or connotations.

parts

Programming languages have alphabet {character set} that makes numbers and words in formats. They have mathematical functions, logical operations, and string manipulations {operator, programming}. They have processing instructions {executable}. They have sentences {declaration, programming} {non-executable declaration} that name, set up arrays, or create symbols.

levels

Machine uses machine-dependent binary code {machine language}. Assembler uses machine-dependent three-letter codes {assembly language} for instructions and addresses and has one statement for each instruction. People use higher-level languages {compiler language} {high-level language}, with one statement for several instructions, such as BASIC, FORTRAN, COBOL, UNIX, and DOS.

ALGOL language

early procedural computer language {ALGOL language}.

BASIC language

Simple basic-function languages {BASIC language} can be for interactive use.

COBOL language

early procedural computer language {COBOL language}.

Java language

Computer languages {Java language} can be object oriented. Java has classes with methods. A main static method may be first. Methods use "get" and "put" for getting and setting values, "is" or "has" for boolean test functions, and action verbs for methods that change state or take action in other ways. Methods should proceed from public to protected to private. Within each group, methods should start with constructors, then instance methods, then static methods. Java has local and global class member instance variables and static member variables. Java has constants. Create output using System.out.println. The entire system has to be layered and buildable in a single pass. A script defines the order in which the packages are built. Java 2 Enterprise Edition (J2EE) defines application servers for Enterprise Java Beans (EJB), Servlets, and Java Server Pages (JSP), to make web-enabled applications.

LISP language

Interactive computer languages {LISP language} can be for symbol manipulation. Symbols can be numbers, words {atom, LISP}, or groups {list, LISP}. Data and operations are both lists {list structure}. Programs use, modify, and recognize lists. List addresses contain two pointers, one to current list value and other to next list item. LISP can perform all string operations and compare lists and operations. Lists can have any number of dimensions.

SQL language

Relational database queries use a language {SQL language} {Structured Query Language}. Make variable names no more than 31 characters. Declare cursors explicitly. Primary cursors remain open. Secondary cursors close after fetching all rows.

table

In a database, each data structure is a table, with columns and rows. The rows are records, a set of information about one item, and the columns are each attributes of the item.

datatype

Each column has entries all in one datatype. The datatypes are integer, floating point number, fixed length field of n characters, variable length field of characters, bit, binary fixed length field of n characters, money, and date and time. A "null" entry means an unknown entry, not blank or zero.

queries

select column, column, ... from table - retrieves data from columns in the table and displays in the order specified.

select column from table where phrase - phrase sets conditions for selection. The phrase may use symbols such as =, >, <, >=, <=, !=, !>, and !< and may use connectors such as and, or, not, between m and n, is null, is not null, in ( ... ), not in ( ... ), and LIKE ' '. The symbols that can be used in LIKE are % for any string of 0 or more characters, _ for anyone character, [ ] for any single character in a range or set, [^] for any single character not in a range or set.

function

select function from table - runs a function, such as "getdate ()".

order

select column from table order by column - sorts in ascending order.

select column from table order by column desc - sorts in descending order.

group

select column from table group by column, column, ... - makes nested groups.

select column from table group by column having phrase - phrase sets conditions for grouping.

operator

select operator(column) - operators check numbers of entries: count(column), max(column), min(column), sum(column), avg(column).

insert

insert table (column, column, ... ) (column-1-name datatype, ...) values ('x', 'y') - inserts rows into table at the columns specified using the values in order.

update

update table set column, column, ... from table where phrase - modifies one table by updating its rows.

delete

delete table from table where phrase - deletes rows from table.

Exception

EXCEPTION traps errors. Some named exceptions are ZERO_DIVIDE, NO_DATA_FOUND, TOO_MANY_ROWS, VALUE_ERROR, OTHERS (for all errors). For example, EXCEPTION WHEN ZERO_DIVIDE THEN RESULT1 = NULL;. It has no continue.

3-Computer Science-Software-Programming-Techniques

code access

Use all function arguments. Be able to access all code {code access}.

code comments

Add comments {code comments} for logical units. Add comments for modifications. Add inline comment after final brace to identify original brace.

conditional statement in software

Use IF-THEN-ELSE {conditional statement, software}, rather than multiple IFs. Use compound IFs, rather than nested IFs. Use braces for nested IF blocks. Always use ELSE after ELSE IF. Enter NULL statement ";" in IF block with no action. Use Switch statements, rather than IF-THEN-ELSE, if possible. Use default Switch at end, containing at least break statement.

constant in software

Use symbolic constants {constant, software}, with no hard-coded numbers.

data type in software

Do not use mixed data types {data type} in expressions. Do not use machine-dependent data representations.

dynamic memory

Use dynamic memory {dynamic memory, computer}, rather than allocating fixed storage. Verify that memory gave information. Free all memory structures no longer used. Allocate memory to structures to keep before structures to free, to avoid memory leaks.

error message in software

Use parameters for error messages {error message} and error numbers, not many hard-coded messages.

file header

Put file name, author, creation date, description, purpose, and modification history in file header {file header, information}.

function header

Put function name, author, creation date, short description, usage, possible return codes, and modification history in function header {function header}.

function return

Return success or failure status {function return} {return, function} to caller. Check status in caller. Store function-return codes in caller for future reference. Do not test function logical value directly. Declare return "void" for functions that do not return value. Declare argument list "void" for functions that do not use parameters.

GOTO command

Do not use GOTO statements {GOTO command}.

header file

Put definitions, global-variable declarations, and function prototypes in header files {header file}. Use "include" statements. For static functions used by one module, put prototype at module top.

input in software

Check input values {input, software} for range and reasonableness.

looping in software

Do not reinitialize index variables in loops {looping, software}. Do not use non-loop-dependent statements in loop bodies.

module files

Put modules in separate files {module files}. Put source code for C++ classes in .CXX files. Put class definitions in .HXX files. Use only logically related functions. Use one entry and exit point for each function. Exit program only through "main" command.

object names in software

Make object names {object names, software} descriptive and globally unique. Use suffix for object types, like libraries. For functions, use lowercase or mixed case. For variables, use lowercase or mixed case. For constants, use uppercase.

operating system services

Minimize operating-system services {operating system services}. Put operating-system services in "system" library, not in high-level code.

readability in software

Separate variables and operators {readability, software}. Write one statement per line, using consistent indentation for logical structure. Place lead brace on same line as statement, or place on next line in same column as statement beginning. Put end brace in same column as statement beginning. Indicate conditional statement using inline comment after end brace.

standard usage in software

Use only standard programming language {standard usage, software}.

variable declaration

Use one line for each variable declaration {variable declaration}. Minimize number of global variables and external variables by passing arguments by value or reference. Declare arrays and do not use pointers except for dynamically allocated memory. Use structures for related data elements, to treat them as single objects.

WHILE command

Do not exit from WHILE-statement body {WHILE command}.

3-Computer Science-Software-Programming-Techniques-Objects

encapsulation

Only methods can access objects {encapsulation, programming}.

inheritance

You can make a child class with all the members and methods of a parent class, and then add extra members and methods {inheritance, programming}.

polymorphism programming

If classes share common methods, the same methods can apply to all the classes {polymorphism, programming}.

Liskov Substitution Principle

You can use a child-class instance if you can use a parent-class instance {Liskov Substitution Principle}.

3-Computer Science-Software-Programming-Kinds

programming types

Programs can be procedure-oriented, non-procedural, problem-oriented, application-oriented, special purpose, problem defining, problem describing, or problem solving {programming types}.

functional programming

Programming {functional programming} can change input to output by performing logical relations on input. Sequence and location are not important, because input calls functions, not registers.

procedural programming

Programming {procedural programming} can perform actions on register states to get new register states. Actions must be in exact sequence at one location. Modules are command sets that perform one process or procedure {process box}, such as moving values, performing logical AND, executing if-then-else statement, or iterating through do-while or perform-until statement. Modules can be scripts. BASIC depends on procedures or scripts and is useful for small systems and rapid development.

satisfiability solver

Software can start with objects and find arrangements that satisfy rule {satisfiability solver} (SAT), in reasonable time.

structured programming

Programming {structured programming} can use independent modules. Programming languages can use objects {object-oriented programming} {component architecture}, rather than procedures. SVL and Perl have both objects and procedures. C++ and Java are almost all object-oriented, can code larger systems, and can require more development time. Rather than procedures, structured programming languages, such as Java, use independent modules {class} about data types (abstract objects) more complex than basic data types such as integers, floating-point numbers, strings, dates, and arrays. Class groups {Java package} are about one system part, such as file control, database, output, input, or flow control. Software systems are package groups.

Objects model data structures such as windows, files, tables, databases, database query results, and images. Data structures have parameters and constant and/or variable properties.

Classes have procedures {methods} about data structures:

Make {constructor} a specific instance of an abstract object with specific property values.

Make an instance {instance method} of an object with a procedure and a returned value.

Open and close windows.

Open file, write to file, read from file, and close file.

Get table-cell value and set table-cell value.

Change object state or property.

Indicate if statement about object state or property is true or false.

Methods can have parameters and return result values. A main static method starts the program and has a procedure that calls objects.

Methods, classes, and packages can call methods, classes, and packages. Classes and packages can share global constants and variables and can modify global variables.

variables

Programs can use global variables in different ways, or different functions can modify global variables {coupling, Java}. Constants can be global.

unique

Functions, methods, classes, and packages have only one copy, called by other functions, methods, classes, or packages.

comments

Packages, classes, functions, and variables can have comments.

format

Commands at same level indent, typically four spaces, to same position. Line lengths are less than 80 characters. Open braces are at line ends, with their close braces on one separate line lined up with opening-line first character {Microsoft style}.

naming

Object names typically have capitalized syllables or words, as in ElecModelWrapper. High-level objects are nouns, as in ElecModelWrapper. Action names start with verbs, as in writeThisFile. Queries start with "get", as in getString. Information collection starts with "put", as in putString. True or false indicators, with boolean datatype, start with "is", as in isConnected. Names about same thing start the same, as in SysProps and SysVars. Typical prefixes are c for constants, g for globals, m for member variables, s for statics, v for variables, and p for parameters. Names are longer than two characters and use letters rather than numbers.

3-Computer Science-Software-Speech Recognition

speech recognition

Put sounds in intervals, measure energies, identify words, and parse sentences to recognize speech {speech recognition}. Segment acoustic waveform into ten-millisecond intervals {segment, sound} {sound segment}.

energy

In intervals, measure several frequency-band energies from 200 Hertz to 6000 Hertz. Linear predictive coding coefficients, zero-crossing rates, glottal frequency, and total energy are measures.

word

Energy sustained over several intervals indicates word. Interval number is word duration. Compressing longer words and elongating shorter words can standardize word duration.

pause

Low energy in one or more intervals indicates pause between words.

identification

Compare word frequency-band energy spectrum to stored word templates to identify word.

parsing

Use word syntactic and semantic information to parse sentence.

language understanding

Systems {language understanding system} can detect strings using features and then classify strings and substrings by syntax.

Related Topics in Table of Contents

3-Computer Science

Drawings

Drawings

Contents and Indexes of Topics, Names, and Works

Outline of Knowledge Database Home Page

Contents

Glossary

Topic Index

Name Index

Works Index

Searching

Search Form

Database Information, Disclaimer, Privacy Statement, and Rights

Description of Outline of Knowledge Database

Notation

Disclaimer

Copyright Not Claimed

Privacy Statement

References and Bibliography

Consciousness Bibliography

Technical Information

Date Modified: 2022.0225